kancollefandomcom_ru-20200215-history
Модуль:Sandbox
local BaseData = require('Модуль:BaseData') local Equipment = require('Модуль:Equipment') local EquipmentCardKai = require('Модуль:EquipmentCardKai') local EquipmentGraphicKai = require('Модуль:EquipmentGraphicKai') local Formatting = require('Модуль:Formatting') local Tabber = require('Модуль:Tabber') local format = require('Модуль:StringInterpolation').format local Sandbox = BaseData{ _template = , --|- --| colspan="2" style="text-align: center; padding: 0px;" | -- Улучшение -- --${improvement} -- -- --|}]], _row_starter = "|-", _compatibility_cell = [[| style="width: 190px; text-align: center; background-color: ${bg_color};" | ${label}]], _localized_name_template = " ${localized_name} ", _alternative_names_template = [[ |- | colspan="2" style="text-align: center; padding: 0px;" | Alternate names ${names} ]], -- _collapsed_content_header = [[ ${content} ]], -- _collapsed_content_row = ${content} , _alternative_name_template = [[ ${label}: ${name} ${japanese_name} ]], _library_name_label = "Library name", _list_name_label = "List name", _comparison_name_label = "Comparison name", _battle_name_label = "Battle name", _equipment_data_documentation = "Шаблон:EquipmentDataDocumentation/EditIntro", _edit_link_text = "Править", _empty_card = "Empty equipment card slot.png", _buildable = "Можно создать", _unbuildable = "Невозможно создать", _float_style_template = "float: ${float};", _shown_ship_types = { 2, 3, 21, 4, 5, 6, 8, 9, 10, 7, 11, 18, 13, 14, 20, 16, 22, 19, 17, false }, _fields = { "edit_link", "rarity", "back", "name", "name_en", "localized_name", "alternative_names", "id", "japanese_name", "icon", "eq_type", "effects", "scrap", "image", "crafting", "compatibility_details", }, } function Sandbox:Infobox(args) return self{ _args = args, }:create_infobox() end function Sandbox:edit_link() self._vars.edit_link = Formatting:format_edit_link(self._equipment_data_module, self._edit_link_text, self._equipment_data_documentation) end function Sandbox:rarity() self._vars.rarity = Formatting:format_equipment_rarity(self._equipment:rarity()) end function Sandbox:back() local back = self._equipment:back() self._vars.back, self._vars.extra_style = Formatting:format_equipment_back(back), Formatting:extra_style_background_image(false, back and back >= 4) end function Sandbox:name() self._vars.name = self._equipment:name() end function Sandbox:name_en() self._vars.name_en = self._equipment:name() end function Sandbox:localized_name() local localized_name = self._equipment:localized_name() if localized_name then self._vars.localized_name = format{self._localized_name_template, localized_name = localized_name} else self._vars.localized_name = "" end end function Sandbox:alternative_names() local alternative_names = {} local list_name = self._equipment:list_name() local library_name = self._equipment:library_name() local comparison_name = self._equipment:comparison_name() local battle_name = self._equipment:battle_name() if list_name then local list_japanese_name = self._equipment:list_japanese_name() local list_reading = self._equipment:list_reading() if list_reading ~= false then list_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(list_japanese_name), Formatting:format_stat(list_reading))) end local list_localized_name = self._equipment:list_localized_name() if list_localized_name then list_name = Formatting:tooltip(Formatting:format_stat(list_name), Formatting:format_stat(list_localized_name)) else list_name = Formatting:format_stat(list_name) end table.insert(alternative_names, format{self._alternative_name_template, label = self._list_name_label, name = list_name, japanese_name = list_japanese_name}) end if library_name then local library_japanese_name = self._equipment:library_japanese_name() local library_reading = self._equipment:library_reading() if library_reading ~= false then library_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(library_japanese_name), Formatting:format_stat(library_reading))) end local library_localized_name = self._equipment:library_localized_name() if library_localized_name then library_name = Formatting:tooltip(Formatting:format_stat(library_name), Formatting:format_stat(library_localized_name)) else library_name = Formatting:format_stat(library_name) end table.insert(alternative_names, format{self._alternative_name_template, label = self._library_name_label, name = library_name, japanese_name = library_japanese_name}) end if comparison_name then local comparison_japanese_name = self._equipment:comparison_japanese_name() local comparison_reading = self._equipment:comparison_reading() if comparison_reading ~= false then comparison_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(comparison_japanese_name), Formatting:format_stat(comparison_reading))) end local comparison_localized_name = self._equipment:comparison_localized_name() if comparison_localized_name then comparison_name = Formatting:tooltip(Formatting:format_stat(comparison_name), Formatting:format_stat(comparison_localized_name)) else comparison_name = Formatting:format_stat(comparison_name) end table.insert(alternative_names, format{self._alternative_name_template, label = self._comparison_name_label, name = comparison_name, japanese_name = comparison_japanese_name}) end if battle_name then local battle_japanese_name = self._equipment:battle_japanese_name() local battle_reading = self._equipment:battle_reading() if battle_reading ~= false then battle_japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(battle_japanese_name), Formatting:format_stat(battle_reading))) end local battle_localized_name = self._equipment:battle_localized_name() if battle_localized_name then battle_name = Formatting:tooltip(Formatting:format_stat(battle_name), Formatting:format_stat(battle_localized_name)) else battle_name = Formatting:format_stat(battle_name) end table.insert(alternative_names, format{self._alternative_name_template, label = self._battle_name_label, name = battle_name, japanese_name = battle_japanese_name}) end if #alternative_names 0 then self._vars.alternative_names = "" else self._vars.alternative_names = format{self._alternative_names_template, names = table.concat(alternative_names, " ")} end end function Sandbox:id() self._vars.id = Formatting:format_stat(self._equipment:id()) end function Sandbox:japanese_name() self._vars.japanese_name = tostring(Formatting:japanese_text(Formatting:format_stat(self._equipment:japanese_name()), Formatting:format_stat(self._equipment:reading()))) end function Sandbox:icon() self._vars.icon = Formatting:format_image{Formatting:format_equipment_icon(self._equipment:icon())} end function Sandbox:eq_type() self._vars.eq_type = Formatting:format_equipment_type(self._equipment:type()) local album_type = self._equipment:album_type() if album_type then self._vars.eq_type = Formatting:tooltip(self._vars.eq_type, album_type) end end function Sandbox:effects() self._vars.effects = Formatting:format_stat_bonuses{ firepower = self._equipment:firepower(), bombing = self._equipment:bombing(), torpedo = self._equipment:torpedo(), aa = self._equipment:aa(), armor = self._equipment:armor(), asw = self._equipment:asw(), shelling_accuracy = self._equipment:shelling_accuracy(), torpedo_accuracy = self._equipment:torpedo_accuracy(), evasion = self._equipment:evasion(), los = self._equipment:los(), speed = Formatting:format_speed(self._equipment:speed()), luck = self._equipment:luck(), range = Formatting:format_range(self._equipment:range()), special = self._equipment:special(), } end function Sandbox:scrap() self._vars.scrap = Formatting:format_resources(self._equipment:scrap()) end function Sandbox:image() local tabber = Tabber() local caption = nil local card_name = self._equipment:card_name() if card_name then local card_caption = {} local card_local = self._equipment:card_localized_name() if card_local then table.insert(card_caption, Formatting:format_stat_with_max(card_name, card_local)) else table.insert(card_caption, card_name) end table.insert(card_caption, "/") table.insert(card_caption, Formatting:format_stat_with_max(self._equipment:card_japanese_name(), self._equipment:card_reading())) caption = table.concat(card_caption) end tabber:add_tab("Карточка", EquipmentCardKai:get{equip = self._equipment, caption = caption}) tabber:add_tab("Фея", EquipmentGraphicKai:get{equip = self._equipment, fairy = "only"}) tabber:add_tab("Оборудование", EquipmentGraphicKai:get{equip = self._equipment}) tabber:add_tab("Комбинация", EquipmentGraphicKai:get{equip = self._equipment, fairy = true}) self._vars.card = tostring(tabber) end function Sandbox:compatibility_details() local result = {} for index, ship_type in ipairs(self._shown_ship_types) do if index % 2 1 then table.insert(result, self._row_starter) end local compatibility, note, ship_label if ship_type then compatibility, note = self._equipment:equippable(ship_type) ship_label = Formatting:format_ship_type(ship_type)-- + " " + Formatting:format_equipment_compatibility_symbol(compatibility) if note then ship_label = Formatting:tooltip(ship_label, note) end else ship_label = Formatting:format_ship_type(ship_type) end table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility(compatibility), label = ship_label}) --table.insert(result, format{self._compatibility_cell, bg_color = Formatting:format_equipment_compatibility_color(compatibility), label = ship_label}) end self._vars.compatibility_details = table.concat(result, "\n") end function Sandbox:crafting() local craft_methods if self._equipment:buildable() then self._vars.buildable = self._buildable else self._vars.buildable = self._unbuildable end end --function Sandbox:improvement() -- local cells = {} -- local improvement = self._equipment:improvement() -- if improvement then -- Formatting:format_resources(improvement:resources()) -- for ship, ship_info in pairs(improvement:ships()) do -- format{self._} --end function Sandbox:create_item() if self._args.name then self._equipment = Equipment(self._args.name, self._args.model) else self._equipment = Equipment(self._args1) end end function Sandbox:get_module() self._equipment_data_module = Equipment:get_module(self._args.name or self._args1) end function Sandbox:create_infobox_prep() self._vars = {} local table_classes = {"infobox", "infobox-left"} if self._args.classes then table.insert(table_classes, self._args.classes) end local collapsible = self._args.collapsible if collapsible then table.insert(table_classes, "mw-collapsible") table.insert(table_classes, "mw-collapsed") end self._vars.table_class = table.concat(table_classes, " ") self._vars.table_id = collapsible and collapsible ~= "true" and ("mw-customcollapsible-" .. collapsible) or "" self._vars.float = self._args.float and format{self._float_style_template, float = self._args.float} or "" end function Sandbox:format_template() for _, field in ipairs(self._fields) do selffield(self) end return format(self._template, self._vars) end function Sandbox:add_fields() return end function Sandbox:create_infobox() self:add_fields() self:create_item() self:get_module() self:create_infobox_prep() return self:format_template() end return Sandbox